Machine Learning - L9 Notes

Contents

  1. 1. Hello world of deep learning (L9)
    1. 1.1. Mini-batch
      1. 1.1.1. Speed
    2. 1.2. 其他
    3. 1.3. 分析

Hello world of deep learning (L9)

看投影片前面有介紹 Keras 可惜影片中沒看到…

Mini-batch

大概是延續未出現在影片中的內容…

關於 mini-batch 在 Deep and Structured - L2 Notes(下) 有。

這邊應該是在解釋它的程式碼。

我們並不會在每次更新時都去算所有 data 的 cost ,然後 minimize total loss ,我們可能會分成好幾部份去做更新。

9-14

以上圖為例:

每一個 batch 裡有 100 筆資料,然後有 n 組 batch 。
每算完一個 batch 就 update 一次參數。

所謂 1 epoch 就是指跑完 n 組 batch 後算一次(參數會更新 n 次)。
而這邊 20 epoch 就是要跑這 n 組 20 次 (更新 n x 20 次)。

  • batch size = 1 ,就是每看 1 筆資料就更新 => Stochastic gradient descent
  • batch size = B ,就是每看 B 筆資料就更新 => mini-batch
  • batch size = 全部資料數 ,就是全看完才更新 => full-batch

Speed

size 也會影響其更新速度:

50000 examples:

  • size = 1 ,1 epoch (50000 updates) ,=> 166s
  • size = 10 ,1 epoch (5000 updates) ,=> 17s

可以看到 size 較大 1 epoch 完成的速度較快,但他們在同樣時間更新的次數是 差不多
( size = 10 ,10 epoch (50000 updates),=> 170s )
然而在更新方向上, size 大的會比較 穩定,所以在這邊選擇 size = 10 較好。

9-15

為什麼 batch 大會較快呢?

大致上是因為在做矩陣運算時,有各種加速,一筆一筆的算(vector) 反而不會比較快。

9-17

當然如果太大也可能產生不好的表現。(e.g. full-batch)
可能每走幾步就卡在 saddle point 或 local minimum 。
而在 mini-batch 中,因為它的隨機性讓它有機會跳出梯度為 0 的區域。

其他

實務上我們在做每個 epoch 時,可以隨機挑選不同的 batch 來加強訓練效果。

9-19

分析

這邊稍微講了一下對每個 neuron 做分析,看它區分了些甚麼。

以下圖為例,第一層可能可以區分在某些位置上如果有墨水,那它的 weight 就比較大,也就會有比較大的 output。

9-20

(其餘略過)